package cn.zwx.goods.svc.service;

import cn.zwx.goods.svc.domain.CategoryAttrDO;
import cn.zwx.goods.svc.domain.entity.CategoryAttrEntity;
import cn.zwx.goods.svc.domain.entity.CategoryEntity;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;

import java.util.List;

/**
 * @author zhangwenxue
 */
public interface CategoryService {

    /**
     * 查询列表借口
     * @param categoryWrapper 查询条件
     * @return 返回列表
     */
    List<CategoryEntity> selectList(LambdaQueryWrapper<CategoryEntity> categoryWrapper);

    /**
     * 根据id查询类目信息
     * @param id 类目id
     * @return 返回类目对象
     */
    CategoryEntity selectById(Integer id);

    /**
     * 新增
     * @param categoryEntity model
     */
    void insert(CategoryEntity categoryEntity);
    /**
     * 修改
     * @param categoryEntity model
     */
    void update(CategoryEntity categoryEntity);

    /**
     * 查询行数借口
     * @param categoryWrapper categoryWrapper
     * @return 返回行数
     */
    Integer selectCount(LambdaQueryWrapper<CategoryEntity> categoryWrapper);

    /**
     * 删除类目信息
     * @param id 类目id
     */
    void delete(Integer id);

    /**
     * 新增类型属性
     * @param categoryAttrList 类目属性
     */
    void batchInsertAttr(List<CategoryAttrEntity> categoryAttrList);

    /**
     * 获取属性信息
     * @param categoryId 属性id
     * @return 类型属性信息
     */
    List<CategoryAttrDO> selectAttrList(Integer categoryId);

    /**
     * 删除属性
     * @param categoryId 删除属性
     */
    void deleteAttr(Integer categoryId);

    /**
     * 删除属性
     * @param attrId 属性id
     */
    void deleteAttrByAttrId(Long attrId);

    /**
     * 根据类型id查询类目信息
     * @param categoryIdList 类目id
     * @return 返回类目信息
     */
    List<CategoryEntity> selectByIdList(List<Integer> categoryIdList);
}
